#include <exception>
#include "myclientlistener.h"
#include <QDebug>
#include "dcpp/Client.h"
#include "dcpp/ChatMessage.h"

using namespace dcpp;

MyClientListener::MyClientListener(QObject *parent) :
    QObject(parent)
{}

void MyClientListener::on(Client *) noexcept
{
}

void MyClientListener::on(ClientListener::Connecting, Client * client) noexcept{
    qDebug()<<trUtf8("Подключаемся к хабу %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::Connected, Client * client) noexcept{
    qDebug()<<trUtf8("Подключились к хабу %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::UserUpdated, Client * client, const OnlineUser &) noexcept{
//    qDebug()<<trUtf8("Обновлены данные пользователя на хабе %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::UsersUpdated, Client * client, const OnlineUserList &) noexcept{
//    qDebug()<<trUtf8("Обновлены данные пользователей на хабе %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::UserRemoved, Client * client, const OnlineUser &) noexcept{
//    qDebug()<<trUtf8("Удалён пользователь на хабе %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::Redirect, Client * client, const string &newAdr) noexcept{
    qDebug()<<trUtf8("Пернаправление с хаба %0 по адресу %1 на %2").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(newAdr.c_str());
}

void MyClientListener::on(ClientListener::Failed, Client * client, const string & err) noexcept{
    qDebug()<<trUtf8("Ошибка приработе с хабом %0 по адресу %1 : %2").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(err.c_str());
}

void MyClientListener::on(ClientListener::GetPassword, Client * client) noexcept{
    qDebug()<<trUtf8("Запрос пароля хабом %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::HubUpdated, Client * client) noexcept{
    qDebug()<<trUtf8("Изменены данные хаба %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::Message, Client * client, const ChatMessage &msg) noexcept{
    qDebug()<<trUtf8("Получено сообщение с хаба %0 по адресу %1 : %2").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(msg.message.c_str());
}

void MyClientListener::on(ClientListener::StatusMessage, Client * client, const string &msg, int n) noexcept{
    qDebug()<<trUtf8("Получено сообщение статуса с хаба %0 по адресу %1 : %2, %3").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(msg.c_str()).arg(n);
}

void MyClientListener::on(ClientListener::HubUserCommand, Client * client, int n1, int n2, const string & str1, const string & str2) noexcept{
    qDebug()<<trUtf8("Поьзовательская команда. Хаб %0 по адресу %1. %2 %3 %4 %5").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(n1).arg(n2).arg(str1.c_str()).arg(str2.c_str());
}

void MyClientListener::on(ClientListener::HubFull, Client * client) noexcept{
    qDebug()<<trUtf8("Хаб %0 по адресу %1 полон.").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::NickTaken, Client * client) noexcept{
    qDebug()<<trUtf8("NickTaken. Хаб %0 по адресу %1").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}

void MyClientListener::on(ClientListener::SearchFlood, Client * client, const string & msg) noexcept{
    qDebug()<<trUtf8("SearchFlood. Хаб %0 по адресу %1. %2").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(msg.c_str());
}

void MyClientListener::on(ClientListener::NmdcSearch, Client * client, const string & str1, int n1, int64_t n2, int n3, const string & str2) noexcept{
    qDebug()<<trUtf8("NmdcSearch. Хаб %0 по адресу %1. %2 %3 %4 %5").arg(client->getHubName().c_str()).arg(client->getAddress().c_str()).arg(str1.c_str()).arg(n1).arg(n2).arg(str2.c_str());
}

void MyClientListener::on(ClientListener::AdcSearch, Client * client, const AdcCommand &, const CID &) noexcept{
    qDebug()<<trUtf8("AdcSearch. Хаб %0 по адресу %1.").arg(client->getHubName().c_str()).arg(client->getAddress().c_str());
}
